/*
 * @Author: i@douxuefeng.cn
 * @Date: 2021-12-19 23:07:40
 * @LastEditTime: 2021-12-23 19:06:57
 * @LastEditors: i@douxuefeng.cn
 * @Description:
 * @FilePath: \go-im\params\params.go
 */
package params

import "sync"

/**
 * @name: 将用户登录信息放到内存中，避免重复使用数据库
 * @key: issuer_id
 */
var UserTokens sync.Map

type Result struct {
	Code int      `json:"code"`
	Data UserInfo `json:"data"`
	Msg  string   `json:"msg"`
}

type UserInfo struct {
	UserId int64  `json:"user_id"`
	Name   string `json:"name"`
	Avatar string `json:"avatar"`
}

const (
	ActionJoinRoom = iota + 1
	ActionChatInRoom
	ActionLeftRoom
	ActionJoinRoomHistoryMsgs
)

const (
	MsgTypeImg = iota + 1
	MsgTypeVoice
	MsgTypeVideo
	MsgTypeWord
)

const (
	Error0         = iota // success
	ErrorWrongRoom = iota + 100000
)

type ReceiveMsg struct {
	Action int     `json:"action"`
	Room   string  `json:"room"`
	Msg    Message `json:"msg"`
}

type Message struct {
	MsgType int    `json:"msg_type"`
	Content string `json:"content"`
	MsgAt   string `json:"msg_at"`
}

type SendMsg struct {
	Errorcode int       `json:"error_code"`
	Action    int       `json:"action"`
	Room      string    `json:"room"`
	IsMe      bool      `json:"is_me"`
	User      *UserInfo `json:"user"`
	Msg       Message   `json:"msg"`
}

type LogMsg struct {
	Action int       `json:"action"`
	Room   string    `json:"room"`
	User   *UserInfo `json:"user"`
	Msg    Message   `json:"msg"`
}
